# 运行的环境 -> 基于Linux文件系统创建出来的 /usr /sys /dev /proc是 Linux 文件系统的重要部分
#指定了基础镜像，也就是将用来构建容器的起始镜像
FROM node:22

#工作目录及代码 使用记得住的路径，这只是在镜像的一个工作路径,方便有些文件需要保存到镜像去映射到宿主机
#设置容器内的工作目录为 /app。所有后续的命令（如 COPY、RUN、CMD 等）都会在这个目录下执行,不存在自动创建
WORKDIR /app

#构建命令 我们不需要npm install && npm run build,有dist
#将构建 Docker 镜像时上下文目录（即 Dockerfile 所在的目录）中的所有文件和子目录复制到镜像中的 /app 目录。
# 第一个点（.）表示当前上下文目录，通常是构建 Docker 镜像时的工作目录。
# 第二个点（.）表示将这些文件复制到容器内的当前工作目录，也就是 /app。
COPY . .

#暴露的目录与项目端口
#将容器内的 /app/logs 目录定义为一个卷，卷是 Docker 提供的一种机制，可以将容器的某些目录映射到宿主机中，这样宿主机就可以访问容器内的文件
# 这个目录主要是产生我们整个程序的一个日志目录，暴露出来以便在宿主机进行查看
VOLUME [ "/app/logs" ] 

EXPOSE 13000

#指定容器启动时运行的默认命令 => npm run start:prod
CMD ["npm","run","start:prod"]